package config

import (
	"context"
	"fmt"
	"freechat-im/external/grpc/chat"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
	"google.golang.org/protobuf/types/known/emptypb"
	"log"
	"sync"
)

var ChatServiceRpc chat.ChatServiceClient = nil
var once3 sync.Once // 确保初始化只执行一次的同步工具

func InitGrpcClients(gRpcAddr string) {
	once3.Do(func() {

		// 使用 grpc.Dial 创建一个到指定地址的 gRPC 连接。
		// 此处使用不安全的证书来实现 SSL/TLS 连接
		conn, err := grpc.NewClient(gRpcAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
		if err != nil {
			log.Fatalf(fmt.Sprintf("grpc connect addr [%s] 连接失败 %s", gRpcAddr, err))
		}
		// 初始化客户端
		ChatServiceRpc = chat.NewChatServiceClient(conn)

		//测试调用
		_, err = ChatServiceRpc.Ping(context.Background(), &emptypb.Empty{})
		if err != nil {
			log.Println("测试gRPC调用Ping未成功... ")
		}
	})
}
